package com.sky.context;
/**
 * 1. 当前模块名: sky-common    公共模块，存放公共类，例如: 工具类、常量类、上下文工具类等
 * 2. 当前包名: sky.context    存放与上下文 (Context) 相关的工具类
 * 3. 当前类名: BaseContext    基础上下文类
 */

/**
 * BaseContext; 基于 ThreadLocal 实现的上下文工具类，用于在当前线程中保存和获取用户 ID 信息。
 */
public class BaseContext {
    /**
     * * 知识点:
     * 1. ThreadLocal 是 Java 提供的线程局部变量工具类，每个线程都会拥有自己独立的变量副本。
     *    适用于多线程环境下保存线程独有的数据，例如用户 ID、会话信息等。
     * 2. public: 表示可以被其他类访问。
     * 3. static: 表示变量或方法属于类本身，而非实例对象。
     * 4. 泛型 <Long>: 限定 ThreadLocal 存储的数据类型为 Long（长整型）。
     */
    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();    // ThreadLocal 变量，用于保存当前线程的用户 ID

    public static void setCurrentId(Long id) {
        threadLocal.set(id);
    }//设置当前线程的用户 ID

    public static Long getCurrentId() {
        return threadLocal.get();
    }//获取当前线程的用户 ID

    public static void removeCurrentId() {
        threadLocal.remove();
    }//移除当前线程保存的用户 ID (防止内存泄漏)

}
/**
 * public class UserContext {
 * // ThreadLocal 变量，用于保存当前线程的用户名
 *     public static ThreadLocal<String> threadLocal = new ThreadLocal<>();
 *     public static void setCurrentUsername(String username) {threadLocal.set(username);}
 *     public static String getCurrentUsername() {return threadLocal.get();}
 *     public static void removeCurrentUsername() {threadLocal.remove();}
 */
